// arrow function
(function () {
    function foo() {
        return () => {
            //这里的this，是在这个函数被创造出来的时候就定好了
            console.log(this.a)
        }
    }

    var obj1 = {
        a: "1"
    }

    var obj2 = {
        a: "2"
    }

    var fn = foo.apply(obj1);//这里决定了fn中this的绑定
    fn.apply(obj2);
})();

// 箭头函数最为普遍的使用场景是：回调函数
// var a = 4;
(function () {
    function foo() {
        setTimeout(() => {
            // `this` here is lexically adopted from `foo()`
            console.log(this.a);
        }, 100);
    }

    var obj = {
        a: 2
    };

    foo.call(obj); // 2
})();